package VistaGraficos;

import java.awt.*;
import java.util.Vector;
import Modelo.*;
import javax.swing.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class GraficoTorta extends JFrame {
	
	private Vector vecVuelos=null;
	private Vector auxGrupo=null;
	private Vector grupo=null;
	 

  
  public GraficoTorta() {
    super("Grafico Torta");

    getContentPane().add(createDemoPanel());
    pack();
   // setVisible(true);
 
  }
  public void setDatos_Vuelos(Vector v){
	  
	  this.vecVuelos=v;
	  agruparVuelos(this.vecVuelos);
	  setVisible(true);
	  
  }


  /**
   * Devuelve los datos del grafico
   */
  private PieDataset createDataset() {
   DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
   int total=0;
   for(int i=0;i<grupo.size();i++){
	   total=(((Grupo_Vuelos)grupo.elementAt(i)).getCantidad())+total;
   }
   for (int i=0;i<grupo.size();i++){
   defaultpiedataset.setValue((((Grupo_Vuelos)grupo.elementAt(i)).getOrigen())+"-"+(((Grupo_Vuelos)grupo.elementAt(i)).getDestino())+"Promedio Vendido"+(((Grupo_Vuelos)grupo.elementAt(i)).getPorcentaje()), new Double((((Grupo_Vuelos)grupo.elementAt(i)).getCantidad())));
   }
	  
  
   return defaultpiedataset;
   
  }
  private void agruparVuelos(Vector agrupar){
	  this.auxGrupo=agrupar;
	  Vuelo auxVuelo=null;
	  //double porcentaje=0;
	  
	  for (int i=0;i<auxGrupo.size();i++){
		  int cont=1;
		  double promedio=0;
		  auxVuelo=((Vuelo)auxGrupo.elementAt(i));
		  for(int a=0;a<auxGrupo.size();a++){
			  if(a!=i){
			  if(auxVuelo.getOrigen()==((Vuelo)auxGrupo.elementAt(a)).getOrigen()& auxVuelo.getDestino()==((Vuelo)auxGrupo.elementAt(a)).getDestino()){
				  cont=cont+1;
				  promedio=promedio+((Vuelo)auxGrupo.elementAt(a)).getPorcentaje();
			  }
			  }
			  
		  }
		  promedio=promedio/auxGrupo.size();
		  
		  Grupo_Vuelos g= new Grupo_Vuelos();
		  g.setPorcentaje(promedio);
		  g.setDestino(auxVuelo.getDestino());
		  g.setOrigen(auxVuelo.getOrigen());
		  g.setCantidad(cont);
		  grupo.addElement(g);
		  
	  }
  }

  /**
   * Devuelve el grafico construido en funcion de los datos que le son pasados.
   */
  private JFreeChart createChart(PieDataset piedataset) {
    JFreeChart jfreechart = ChartFactory.createPieChart("Vuelos vendidos", piedataset, true, true, false);
    
    PiePlot pieplot = (PiePlot)jfreechart.getPlot();
    pieplot.setLabelFont(new Font("SansSerif", 0, 12));

    pieplot.setCircular(false);
    pieplot.setLabelGap(0.02D);
    return jfreechart;
  }

  /**
   * Devuelve un JPanel con el grafico
   */
  public JPanel createDemoPanel() {
    JFreeChart jfreechart = createChart(createDataset());
    return new ChartPanel(jfreechart);
  }

  public static void main(String[] args) {
    GraficoTorta torta = new GraficoTorta();
  }

}
